package model

const (
	LoginMesType            = "LoginMes"
	LonginResMesType        = "LoginResMes"
	RegisterMesType         = "RegisterMes"
	RegisterResMesType      = "RegisterResMes"
	NotifyUserStatusMesType = "NotifyUserStatusMes"
	SmsMesType              = "SmsMes"
	SmsPrivateMesType       = "SmsPrivateMes"
	LogoutMesType           = "LogoutMes"
)

// 这里我们定义几个用户状态的常量
const (
	UserOnline = iota
	UserOffline
	UserBusyStatus
)

const (
	ParseJsonError     = "PARSE_JSON_ERROR"
	SerializeJsonError = "SERIALIZE_JSON_ERROR"
	InputError         = "INPUT_ERROR"
)

// Message
// @Description: 消息结构体
type Message struct {
	Type string `json:"type"` //消息体类型
	Data string `json:"data"` //消息数据
}

// LoginMes
// @Description: 登录消息结构体
type LoginMes struct {
	UserId   int    `json:"userId"`
	UserPwd  string `json:"userPwd"`
	UserName string `json:"userName"`
}

// LoginResMes
// @Description: 登录消息res结构体
type LoginResMes struct {
	Code    int    `json:"code"`
	UsersId []int  `json:"usersId"`
	Error   string `json:"error"`
}

// RegisterMes
// @Description: 注册用户结构体
type RegisterMes struct {
	User User `json:"user"`
}

// RegisterResMes
// @Description: 注册用户res结构体
type RegisterResMes struct {
	Code  int    `json:"code"`
	Error string `json:"error"`
}

// NotifyUserStatusMes 为了配合服务器端推送用户状态变化的消息
type NotifyUserStatusMes struct {
	UserId int `json:"userId"` //用户id
	Status int `json:"status"` //用户的状态
}

// SmsMes 增加一个SmsMes //发送的消息
type SmsMes struct {
	Content string `json:"content"` //内容
	User           //匿名结构体，继承
}

// SmsPrivateMes 增加一个SmsMes //发送的消息
type SmsPrivateMes struct {
	Content  string `json:"content"` //内容
	User            //匿名结构体，继承
	ToUserId int    `json:"toUserId"`
	Code     int    `json:"code"`
	Err      string `json:"err"`
}

// LogoutMes
// @Description: 退出
type LogoutMes struct {
	UserId     int    `json:"userId"`
	LogoutTime string `json:"logoutTime"`
}
